# gomoku_ai/utils/device_config.py
import torch

def get_device():
    """
    智能选择并返回一个可用的计算设备。
    优先尝试使用GPU，如果GPU不可用或不兼容，则回退到CPU。
    """
    # return torch.device("cpu")
    if torch.cuda.is_available():
        try:
            # 尝试在GPU上执行一个简单的操作来测试其真正可用性
            # 这可以捕获像 "no kernel image is available" 这样的错误
            torch.zeros(1).cuda()
            print("✅ 检测到兼容的CUDA GPU，将使用GPU进行加速。")
            return torch.device("cuda")
        except RuntimeError as e:
            print(f"⚠️ 检测到GPU，但出现错误: {e}")
            print("🔄 将回退到CPU模式。")
            return torch.device("cpu")
    else:
        print("🖥️ 未检测到CUDA GPU，将使用CPU进行计算。")
        return torch.device("cpu")


# 在模块加载时就确定好设备，其他地方直接导入使用
DEVICE = get_device()
